﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Mono.Cecil;

namespace CoreEx.Common.Ioc
{    
    /// <summary>
    /// Represents a class that is capable of weaving an assembly 
    /// before it gets loaded into the current <see cref="AppDomain"/> 
    /// </summary>
    public interface IAssemblyWeaver
    {
        /// <summary>
        /// Weaves the assembly represented by the <paramref name="assemblyDefinition"/> parameter.
        /// </summary>
        /// <param name="assemblyDefinition">The modified/weaved assembly.</param>
        void Weave(AssemblyDefinition assemblyDefinition);        
    }
}
